package main

import (
	_ "beegoProject08/models/auth"
	_ "beegoProject08/models/user"
	_ "beegoProject08/routers"
	"beegoProject08/utils"
	"fmt"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/logs"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
	"log"
)

/*
9.40【日志模块】日志功能添加
	1. main.go 根目录新建logs 定义日志参数logs.Set.....
	2. login_controller.go 增加日志输出 19H，57H, 63H, 70H, 78H, 95H,
	3. user_controller.go  (List 44H)，(ToAdd 141H)，(IsActive 180H,188H),(ResetPassword 216H),(ToUpdate 232H),(DoUpdate 271H,276H,293H,298H)
	4. main.go 数据库添加log日志

9.41【权限管理模块】表关系梳理
9.42【权限管理模块】权限表字段设计
9.43【权限管理模块】角色表字段设计

9.44【权限管理模块】模型创建及表迁移
	1. models - auth - auth.go 创建数据库表字段 auth，role 并定义 TableName和init
	2. main.go 引入 _ "beegoProject08/models/auth"
	3. 数据库表生成 go run main.go orm syncdb -v

9.45【权限管理模块】权限列表页面完善
	1. controller - auto_controller.go
	2. 拷贝auth-list和auto-add到view-auth下
	3. 路由
	4. 修改首页控制器index.html 189H
	5. auth-list.html 引入静态文件 /static/ 27H，29H，

9.46【权限管理模块】权限列表动态数据渲染
	1. auto_controller.go 定义逻辑规则
	2. auth-list.html 61H-67H, 70H添加{{ range .auths }}, 76-97H,
	3. 数据库表格初始化数据 sys_auth
	4.

9.47【权限管理模块】权限列表分页功能完成
	1. auth_controller.go 43-57H, 65-67H
	2. auth-list.html 修改div 111-127H，54H,



9.48【权限管理模块】权限添加ajax功能完成
	1.
	2.
	3.
	4.


9.49【权限管理模块】权限添加后端逻辑完成
	1.
	2.
	3.
	4.




*/

func init() {
	user := beego.AppConfig.DefaultString("mysql::Username", "root")
	pwd := beego.AppConfig.DefaultString("mysql::Password", "Ideal123")
	host := beego.AppConfig.DefaultString("mysql::Host", "127.0.0.1")
	port := beego.AppConfig.DefaultInt("mysql::Port", 3306)
	dbName := beego.AppConfig.DefaultString("mysql::DbName", "beegoProject")

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=PRC",
		user, pwd, host, port, dbName)

	orm.RegisterDriver("mysql", orm.DRMySQL)
	orm.RegisterDataBase("default", "mysql", dsn)

	db, err := orm.GetDB("default")
	if err != nil {
		log.Fatal(err)
	} else if err := db.Ping(); err != nil {
		log.Fatal(err)
	}
}

func main() {
	orm.RunCommand()
	orm.Debug = true
	beego.BConfig.WebConfig.Session.SessionOn = true

	// 未登录请求拦截
	beego.InsertFilter("/main/*", beego.BeforeRouter, utils.LoginFilter)

	// 日志
	logs.SetLogger(logs.AdapterMultiFile, `{"filename":"logs/beego.log","separate":["error","info","debug"]}`)

	beego.Run()
}
